1. Field of the Invention
The present invention relates generally to data communication networks. In particular, the present invention relates to a method and device for performing caching of data in a data communication network.
2. Background
The growth rate of network traffic continues to accelerate, albeit not quite at the exponential rates of the late 1990's. This expanding pace puts strains on the infrastructure that carries that traffic. Various solutions have arisen to permit network operators to handle this increasing problem, including the development of caching technology. With caching, content may be reused and served to clients without burdening server infrastructure. Additionally, caches can permit content to be placed closer to the end user thereby improving response time while also reducing server infrastructure burden.
Caching works by monitoring object requests made by one or more clients to a server on a network and saving the result of such request or requests in the storage of an appliance on the network. Subsequent requests for that same object are intercepted by the cache which delivers the object from its storage rather than passing the request on to the origin server. In this manner, caching provides the dual benefit of lowering response times and lowering the load on the server infrastructure.
However, as the Internet has expanded, multiple modes of processing data have developed to provide various performance, security and other benefits to network traffic. These modes of processing, however, have limited the effectiveness and performance capabilities of caches. Caches traditionally are not able to handle or process the variety of forms that data can take in the ever more complex and processed network environments and therefore the function and usefulness of such caches are commensurately limited.
Traditionally, caches have also been limited by virtue of being unable to serve to users that must be authenticated and/or authorized by the network prior to the delivery of content to such user. Authentication and authorization features have not been part of cache functionality.
Additional limitations of caches have included the inability to process and cache Hypertext Transfer Protocol over Secure Sockets Layer (HTTPS) traffic. Traditional caches have no way of decrypting, comprehending or processing encrypted traffic and therefore are unable to cache any HTTPS object or to provide end-to-end encryption for cached objects.
Furthermore, the ability of the cache to work with other network services and technologies including load balancing technology and other types of acceleration and packet processing has been less then optimal. The problem arises because of processing duplications and other inefficiencies introduced by traditional modes of integration that typically require multiple memory copies and frequent context switching to effect the integration.
The traditional approach to integrating a cache with other types of network processing usually involve placing multiple products in a line so that each function is carried out at a separate and independent node. This approach introduces considerable additional processing and a number of other inefficiencies as described below. Even if the technologies are combined within the same product, the combination is usually implemented in such a way that the benefits of caching when integrated with any other processing are diminished in the process of integration. The limitation of such integration arises as a result of the excess processing, copying and context switching involved in making these technologies work together.
The excess copying and switching results from the fact that each request or object must first be copied into a new form in the processor memory space by the application. The copying into memory space is performed in order to enable the additional processing (such as encryption/decryption, compression, connection offload or any other type of processing) to be carried out. The request or object must then be copied back to the packet level prior to being processed by the cache itself. Each additional type of processing generally requires packet copying to processor buffers, processing by the application and then copying back out for service by the cache. This approach to process integration therefore introduces multiple additional memory copies putting additional and unnecessary burdens upon the network infrastructure. An embodiment of the present invention minimizes this switching of contexts and duplicative processing as will be described below.